package groupTalk;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

/**
 * 实现TCP通信下多发多收：服务端开发
 */
public class ServerDemo2 {

    //定义集合，存储在线的客户端socket
    public static List<Socket> sockets = new ArrayList<>();

    public static void main(String[] args) throws Exception {
        System.out.println("==服务端启动==");
        //1.创建一个TCP服务端Socket对象
        ServerSocket ss = new ServerSocket(9999);
        while(true){
            //2.调用accept方法，阻塞等待客户端连接，一旦有客户端连接，就返回一个Socket对象，用于和客户端进行数据通信
            Socket socket = ss.accept();
            System.out.println("一个客户端上线了！" + socket.getInetAddress().getHostAddress());
            sockets.add(socket);
            //3.把这个客户端管道交给一个独立的子线程专门负责接收这个管道的数据
            new ServerReader(socket).start();
        }
    }
}